home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2008 March / MAC_easy_03_08.iso / Software / Shareware / Isolator-3.3.dmg / Docs / Source Code / IsoStatusItemView.m < prev    next >
Encoding:
Text File  |  2008-06-04  |  3.0 KB  |  109 lines

  1. //
  2. //  IsoStatusItemView.m
  3. //  Isolator
  4. //
  5. //  Created by Ben Willmore on 06/03/2008.
  6. //  Copyright 2008 __MyCompanyName__. All rights reserved.
  7. //
  8.  
  9. #import "IsoStatusItemView.h"
  10. #include <AppKit/NSEvent.h>
  11.  
  12. #define NSAppKitVersionNumber10_4 824
  13.  
  14. @implementation IsoStatusItemView
  15.  
  16. - (id) initWithFrame:(NSRect)frame isoController:(IsoController*)theIsoController
  17. {
  18.     [super initWithFrame:frame];
  19.     
  20.     isoController = theIsoController;
  21.     highlighted = NO;
  22.  
  23.     return self;
  24. }
  25.  
  26. - (void) drawRect:(NSRect)bounds {
  27.     NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
  28.  
  29.     [[isoController getStatusItem] drawStatusBarBackgroundInRect:bounds withHighlight:highlighted];
  30.  
  31.     NSRect rect;
  32.     NSColor * embossedColor = nil;
  33.     NSColor * outerBorderColor = nil;
  34.     NSColor * innerBorderColor = nil;
  35.     NSColor * squareColor = nil;
  36.     
  37.     if (!highlighted) {
  38.         if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_4)
  39.             embossedColor = [NSColor colorWithDeviceRed:240./255 green:240./255 blue:240./255 alpha:0.4];
  40.  
  41.         outerBorderColor = [NSColor blackColor];
  42.         innerBorderColor = [NSColor colorWithDeviceRed:60./255 green:60./255 blue:60./255 alpha:0.7];
  43.     }
  44.     else {
  45.         outerBorderColor = [NSColor whiteColor];
  46.         innerBorderColor = [NSColor colorWithDeviceRed:200./255 green:200./255 blue:200./255 alpha:1.0];
  47.     }
  48.     
  49.     if ([isoController isActive]) {
  50.         NSData *theData=[defaults dataForKey:@"BackgroundColor"];
  51.         if (theData) {
  52.             squareColor = (NSColor *)[NSUnarchiver unarchiveObjectWithData:theData];
  53.             if ([defaults objectForKey:@"BackgroundOpacity"])
  54.                 squareColor = [squareColor colorWithAlphaComponent:[defaults floatForKey:@"BackgroundOpacity"]];
  55.         }
  56.         else  // nothing stored for background colour
  57.             squareColor = [NSColor blackColor];
  58.     }
  59.     else // inactive
  60.         squareColor = nil;
  61.         
  62.     if (embossedColor) {
  63.         [embossedColor set];
  64.         rect = NSMakeRect(bounds.origin.x+4,bounds.origin.y+3,bounds.size.width-8, bounds.size.height-9);
  65.         NSFrameRectWithWidth(rect,1);
  66.     }
  67.     
  68.     [outerBorderColor set];
  69.     rect = NSMakeRect(bounds.origin.x+4,bounds.origin.y+4,bounds.size.width-8, bounds.size.height-8);
  70.     NSFrameRectWithWidth(rect,1);
  71.  
  72.     [innerBorderColor set];
  73.     rect = NSMakeRect(bounds.origin.x+5,bounds.origin.y+5,bounds.size.width-10, bounds.size.height-10);
  74.     NSFrameRectWithWidth(rect,1);
  75.     
  76.     if (squareColor) {
  77.         [squareColor set];
  78.         rect = NSMakeRect(bounds.origin.x+6,bounds.origin.y+6,bounds.size.width-12, bounds.size.height-12);
  79.         NSRectFill(rect);
  80.     }
  81. }
  82.     
  83. - (void)mouseDown:(NSEvent *)event
  84. {
  85.     NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
  86.     //NSLog(@"%@",event);
  87.     int mod = [event modifierFlags];
  88.     if ( (mod&NSControlKeyMask) || ([defaults integerForKey:@"MouseClickEffect"]==1) ) {
  89.         highlighted = YES;
  90.         [self setNeedsDisplay:YES];
  91.         [isoController showStatusMenu];
  92.         highlighted = NO;
  93.         [self setNeedsDisplay:YES];
  94.     }
  95.     else
  96.         [isoController toggle];
  97. }
  98.  
  99. - (void)rightMouseDown:(NSEvent *)theEvent;
  100. {
  101.     highlighted = YES;
  102.     [self setNeedsDisplay:YES];
  103.     [isoController showStatusMenu];
  104.     highlighted = NO;
  105.     [self setNeedsDisplay:YES];
  106. }
  107.  
  108. @end
  109.